﻿/*
 * Copyright (c) United Binary LLC.  All rights reserved.
 * 
 * This code is licensed under the MIT License
 * 
 * SEE: http://harnessit.codeplex.com/license
 * 
 */
using System;
using System.Drawing;

namespace UnitedBinary.UnitTests.Framework
{
	public interface Are
	{
		bool Equal(string expected, string actual);
		bool Equal(string expected, string actual, string description);
		bool NotEqual(string expected, string actual);
		bool NotEqual(string expected, string actual, string description);
		bool Equal(string expected, string actual, bool ignoreCase);
		bool Equal(string expected, string actual, bool ignoreCase, string description);
		bool NotEqual(string expected, string actual, bool ignoreCase);
		bool NotEqual(string expected, string actual, bool ignoreCase, string description);

		bool Equal(short expected, short actual);
		bool Equal(short expected, short actual, string description);
		bool NotEqual(short expected, short actual);
		bool NotEqual(short expected, short actual, string description);

		bool Equal(int expected, int actual);
		bool Equal(int expected, int actual, string description);
		bool NotEqual(int expected, int actual);
		bool NotEqual(int expected, int actual, string description);

		bool Equal(long expected, long actual);
		bool Equal(long expected, long actual, string description);
		bool NotEqual(long expected, long actual);
		bool NotEqual(long expected, long actual, string description);

		bool Equal(ushort expected, ushort actual);
		bool Equal(ushort expected, ushort actual, string description);
		bool NotEqual(ushort expected, ushort actual);
		bool NotEqual(ushort expected, ushort actual, string description);

		bool Equal(uint expected, uint actual);
		bool Equal(uint expected, uint actual, string description);
		bool NotEqual(uint expected, uint actual);
		bool NotEqual(uint expected, uint actual, string description);

		bool Equal(ulong expected, ulong actual);
		bool Equal(ulong expected, ulong actual, string description);
		bool NotEqual(ulong expected, ulong actual);
		bool NotEqual(ulong expected, ulong actual, string description);

		bool Equal(DateTime expected, DateTime actual);
		bool Equal(DateTime expected, DateTime actual, string description);
		bool NotEqual(DateTime expected, DateTime actual);
		bool NotEqual(DateTime expected, DateTime actual, string description);

		bool Equal(Guid expected, Guid actual);
		bool Equal(Guid expected, Guid actual, string description);
		bool NotEqual(Guid expected, Guid actual);
		bool NotEqual(Guid expected, Guid actual, string description);

		bool Equal(Size expected, Size actual);
		bool Equal(Size expected, Size actual, string description);
		bool NotEqual(Size expected, Size actual);
		bool NotEqual(Size expected, Size actual, string description);

		bool Equal(Point expected, Point actual);
		bool Equal(Point expected, Point actual, string description);
		bool NotEqual(Point expected, Point actual);
		bool NotEqual(Point expected, Point actual, string description);

		bool Equal(Rectangle expected, Rectangle actual);
		bool Equal(Rectangle expected, Rectangle actual, string description);
		bool NotEqual(Rectangle expected, Rectangle actual);
		bool NotEqual(Rectangle expected, Rectangle actual, string description);

		bool Equal(decimal expected, decimal actual, decimal delta);
		bool Equal(decimal expected, decimal actual, decimal delta, string description);
		bool NotEqual(decimal expected, decimal actual, decimal delta);
		bool NotEqual(decimal expected, decimal actual, decimal delta, string description);

		bool Equal(float expected, float actual, float delta);
		bool Equal(float expected, float actual, float delta, string description);
		bool NotEqual(float expected, float actual, float delta);
		bool NotEqual(float expected, float actual, float delta, string description);

		bool Equal(double expected, double actual, double delta);
		bool Equal(double expected, double actual, double delta, string description);
		bool NotEqual(double expected, double actual, double delta);
		bool NotEqual(double expected, double actual, double delta, string description);

		bool Equal(RectangleF expected, RectangleF actual, float delta);
		bool Equal(RectangleF expected, RectangleF actual, float delta, string description);
		bool NotEqual(RectangleF expected, RectangleF actual, float delta);
		bool NotEqual(RectangleF expected, RectangleF actual, float delta, string description);

		bool Equal(SizeF expected, SizeF actual, float delta);
		bool Equal(SizeF expected, SizeF actual, float delta, string description);
		bool NotEqual(SizeF expected, SizeF actual, float delta);
		bool NotEqual(SizeF expected, SizeF actual, float delta, string description);

		bool Equal(PointF expected, PointF actual, float delta);
		bool Equal(PointF expected, PointF actual, float delta, string description);
		bool NotEqual(PointF expected, PointF actual, float delta);
		bool NotEqual(PointF expected, PointF actual, float delta, string description);

		bool Equal<T>(T expected, T actual, HarnessItComparer<T> comparer);
		bool Equal<T>(T expected, T actual, HarnessItComparer<T> comparer, string description);
		bool NotEqual<T>(T expected, T actual, HarnessItComparer<T> comparer);
		bool NotEqual<T>(T expected, T actual, HarnessItComparer<T> comparer, string description);
	}
}
